#include <bits/stdc++.h>
using namespace std;
const int N = 110;
const int A = 26;
int n;
vector<int> adj[A];
int indeg[A];
string name[N];
int enc(int a) {
  if (a == ' ')
    return 0;
  else
    return a - 'a' + 1;
}
int main() {
  cin >> n;
  for (int i = 0; i < n; ++i) {
    cin >> name[i];
    name[i] += ' ';
  }
  for (int i = 0; i < n - 1; ++i) {
    int pos = 0;
    while (name[i][pos] == name[i + 1][pos]) pos++;
    int u = enc(name[i][pos]), v = enc(name[i + 1][pos]);
    adj[u].push_back(v);
    indeg[v]++;
  }
  queue<int> q;
  int cnt = 0;
  for (int i = 0; i <= 26; ++i) {
    if (!indeg[i]) q.push(i);
  }
  string ans;
  while (q.size()) {
    int u = q.front();
    q.pop();
    ans += char(u + 'a' - 1);
    cout << ans << endl;
    cnt++;
    for (int v : adj[u]) {
      indeg[v]--;
      if (!indeg[v]) q.push(v);
    }
  }
  if (cnt == 26)
    cout << ans << endl;
  else
    cout << "Impossible\n";
}
